package com.pattern.singleton.type1;

/**
 * @author 冯志立
 * @create 2019-10-17 11:17
 */
public class SingletonTest01 {
}

//饿汉式（静态变量）   类装载的时候完成实例化，但是可能造成内存浪费
class Singleton {
    //1.构造器私有化，外部不能new
    private Singleton(){}

    //2.本类内部创建实例
    private final static Singleton instance = new Singleton();

    //3.提供一个公有的静态方法，返回实例对象
    public static Singleton getInstance() {
        return instance;
    }
}

//饿汉式（静态代码块）
class Singleton2 {
    //2.本类内部创建实例
    private static Singleton2 instance;

    static { //在静态代码块中，创建单例对象； 类装载的时候执行
        instance = new Singleton2();
    }

    //1.构造器私有化，外部不能new
    private Singleton2() {}

    //3.提供一个公有的静态方法，返回实例对象
    public static Singleton2 getInstance() {
        return instance;
    }
}